想·"""
!/usr/bin/env python
-*- coding: utf-8 -*-
@Author  : MarkJia
@Site    : 
@File    : 13、allure用法.py
"""

# ================ pytest --help|grep allure ===============
# pip install allure-pytest
# 测试报告中添加错误日志、截图

"""
常用装饰器
@allure.epic()          描述，定义项目的使用(多个项目区分)。往下是 Feature
@allure.feature()       模块名称：登录、搜素
@allure.story()         模块下的子模块
@allure.title()         用例标题：可以中文
@allure.description()   用例描述：加描述
@allure.step()          操作步骤：拆分、描述很多测试步骤   with allure.step('步骤一：打开浏览器')
@allure.testcase()      用例相关连接（关联手工用例） ->  （url,用例平台）
@allure.severity()      用例级别：blocker:阻塞级别   critical:严重级别   normal:普通级别   minor:次要缺陷   trivial:界面摆放
@allure.issue()         关联缺陷地址    -> (bug号，禅道)
@allure.link()          添加链接  -> (url，name)
@allure.attachment()    添加附件：文本、图片等   allure.attach.file 或者 allure.attach
"""

import allure


# 指定模块运行：pytest 13、allure用法.py  --allure-features="搜索模块" --alluredir ./allure_report --clean-alluredir
@allure.feature('搜索模块')
class Testserch:
    # 修改用例标题
    @allure.title("搜索用例-搜索历史工单")
    def test_case1(self):
        print('case1')

    @allure.title("搜索用例 -搜索历史事件")
    def test_case2(self):
        print('case2')


# 执行方法： pytest 13、allure用法.py --alluredir ./allure_report
# 运行时清空原来的历史记录：  pytest 13、allure用法.py --alluredir ./allure_report --clean-alluredir
# 执行完成后，用 allure serve ./allure_report 命令打开


# 指定feature运行   pytest 13、allure用法.py  --allure-features="搜索模块"  --alluredir ./allure_report


@allure.feature('登录模块')
class Testlogin:

    @allure.story('登录成功')
    @allure.title('登录成功')
    def test_login_success(self):
        # 添加测试步骤
        with allure.step('步骤一：打开应用'):
            print('打开应用')
        with allure.step('步骤二：进入登录界面'):
            print('登录界面')
        with allure.step('步骤三：输入用户名和密码'):
            print('输入用户名和密码')
        with allure.step('步骤四：登录成功'):
            print('登录成功')

    @allure.story('登录失败')
    @allure.title('密码错误登录失败')
    def test_login_passwdfail(self):
        print('输入错误的密码')
        print('登录失败')
        # 将 截图 放到报告中
        allure.attach.file("search_res.png", name='截图', attachment_type=allure.attachment_type.PNG, extension=".jpg")

    @allure.story('登录失败')
    @allure.title('用户名错误登录失败')
    def test_login_usernamefail(self):
        print('输入错误用户名')
        print('登录失败')


@allure.feature('链接模块')
class Testlinkwithissue:
    @allure.title('链接')
    @allure.link('https://www.baidu.com', name='百度地址链接')
    def test_with_link(self):
        print('添加百度链接')

    # bug号 和  bug地址：禅道
    @allure.title('关联禅道bug')
    @allure.issue('7310', 'https://chandao/7310')
    def test_with_issue(self):
        print('关联bug链接')

    @allure.title('关联用例')
    @allure.testcase(url='https://www.baidu.com', name='测试用例管理平台')
    def test_case_with_link(self):
        print('关联测试用例')


# 用例级别：blocker:阻塞级别  critical:严重级别  normal:普通级别  minor:次要缺陷  trivial:轻微级别
# 命令行设置优先级执行：pytest 13、allure用法.py  --allure-severities=normal,blocker --alluredir ./allure_report --clean-alluredir

# ===================== 可以把装饰器加在类上（针对整个类级别） =========================
@allure.feature('设置优先级模块')
class Testpriority:
    @allure.title('阻塞级别')
    @allure.severity(allure.severity_level.BLOCKER)
    def test_blocker(self):
        print('阻塞级别：冒烟测试')

    @allure.title('严重级别')
    @allure.severity(allure.severity_level.CRITICAL)
    def test_critical(self):
        print('严重级别：功能缺失')

    @allure.title('普通级别')
    @allure.severity(allure.severity_level.NORMAL)
    def test_normal(self):
        print('普通级别:一般测试')

    @allure.title('次要级别')
    @allure.severity(allure.severity_level.MINOR)
    def test_minor(self):
        print('次要级别')

    @allure.title('轻微级别')
    @allure.severity(allure.severity_level.TRIVIAL)
    def test_trivial(self):
        print('轻微提示级别')
